載下來的檔案,看起來編碼錯誤
用unicode線上編輯器轉成16進制
再丟進來從16進制轉到ASCII
搜尋IDA pro後載想要安裝版本,這邊用linux
chmod +x idafree77_linux.run #要先修改權限,再執行
sudo ./idafree77_linux.run
sudo ln -s /opt/idafree-7.7/ida64 /usr/bin #建立實體連結
ida64 #執行
結果發現檔案格式不對,只能硬幹惹
PE是微軟的一種執行檔的資料形式 不是副檔名
直接看fun1後知道是比大小,輸出較大的數
再把比較大的數變成16進位得到flag
SP, the Stack Pointer,R13:用來當作active stack的指標
LR, the Link Register,R14:用來當存子程式的return address
add:加,如:add r1, r2 ==>r1 = r1 + r2
add r1, r2, #1 ==>r1 = r2 + 1
sub:減,如:sub r1, r2 ==>r1 = r1 - r2
sub r1, r2, #1 ==>r1 = r2 - 1
CMP:比較,比較方式也是同sub,用減的來比較,但不影響減數及被減數。
LDR(load (to) Register):從記憶體位址載入資料到單一暫存器,
如:LDR R1, [R0] #R1 = *R0,從位址 R0 載入到 R1暫存器
LDR R0, [R1], #8 // R0 = *R1 then R1 = R1 + 8
STR(store (from) Register):從單一暫存器的值存回記憶體,
如:STR R1, [R0] # *R0 = R1, 把 R1 暫存器寫到位址 R0
STR R0, [R1], #-8 // *R1 = R0 then R1 = R1 - 8
bls:Branch if Lower or the Same,當小於等於時,跳轉(jump)
b :b addr L ==> pc = addr無條件跳轉。
看一下程式碼,很明顯這有flag,但有缺
循著 "key_full_template_trial"搜尋,看到這段很可疑,一看就知道是上面的XXXX
跑一下程式後就找到flag的一部分,加上原本的就解完啦